<template>
  <div>
    <UploadExcel :on-success="onSuccess"></UploadExcel>
  </div>
</template>

<script>
import { batchUserApi } from '@/api/employees'
export default {
  data() {
    return {
      type: this.$route.query.type // 区分模块来源
    };
  },
  methods: {
    // 监听用户选择excel成功
    onSuccess(data) {
      // if (this.type === 'user') {
      //   this.userHandler(data)
      // }
      this[`${this.type}Handler`](data)
    },
    // 处理用户模块导入逻辑
    async userHandler({ results }) {
      const userRelations = {
        入职日期: 'timeOfEntry',
        手机号: 'mobile',
        姓名: 'username',
        转正日期: 'correctionTime',
        工号: 'workNumber'
      }
      /**
       * 转换目标：
       * [
       * {
       * username: '张三',
       * mobile: 14414344,
       * timeOfEntry: 'xxxx'
       * ...
       * }
       * ]
       */
      const arr = []
      results.forEach((item) => {
        const userinfo = {}
        // 一系列操作处理
        // userinfo = { username: '', ...}
        Object.keys(item).forEach((key) => {
          if (
            userRelations[key] === 'timeOfEntry' ||
            userRelations[key] === 'correctionTime'
          ) {
            userinfo[userRelations[key]] = new Date(this.formatDate(item[key], '/'))
          } else {
            userinfo[userRelations[key]] = item[key]
          }
        })
        arr.push(userinfo)
      })
      console.log(arr)
      await batchUserApi(arr)
      this.$message.success('导入成功')
      this.$router.back()
    },
    // 注意：Excel读取出来的时间格式不能直接使用，
    // 需要转换一下才能被正常的解析
    formatDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1)
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + month + format + date
      }
      return (
        year +
        (month < 10 ? '0' + month : month) +
        (date < 10 ? '0' + date : date)
      )
    }
  }
}
</script>

<style>
</style>